package com.namecard.namecardapi.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.namecard.namecardapi.entity.CardInfo;
import com.namecard.namecardapi.entity.DTO.CardShopDTO;
import com.namecard.namecardapi.entity.vo.*;
import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author wzx
 * @since 2023-07-03
 */
public interface CardInfoService extends IService<CardInfo> {

    /**
     * 完善名片信息
     * @param cardInfo 名片信息
     * @param userId 用户id
     */
    void cardInfo(CardInfo cardInfo, String userId);

    /**
     * 展示未购买的名片的简单数据
     *
     * @param cardId 名片id
     * @return 返回的简单数据
     */
    BasicCardVO getBasicCard(String cardId);

    /**
     * 获取已经购买的名片的全部信息
     * @param cardId 卡片id
     * @return 返回的所有数据
     */
    CardInfoVO getCardAll(String cardId);

    /**
     * 修改名片信息接口
     */
    void updateCard(CardInfo cardInfo, String userId);


    /**
     * 已购买名片展示信息接口
     * @param userid  userid
     */
    List<CardInfoVO> showBuyCard(String userid);


    /**
     * 定时推送名片接口
     */
    void timingPush();


    /**
     * 用户获取推送名片接口
     */
    List<CardAllInfoVO> userGetPush(String userId);

    /**
     * 名片市场
     *
     * @return 结果数据
     */
    PageDataVO cardShop(CardShopDTO cardShopDTO);

    /**
     * 特殊数据购买符合的数据条数查询
     */
    int specialDataList(SpecialShopVO specialShopVO, String userId);


    /**
     * 获取每日免费卡片
     * @return
     */
    DailyRandomCard getFreeCard(String userId);

    /**
     * 获取曝光度前20的卡片
     * @return
     */
    List<CardAllInfoVO> getTop20(String titleId);

    /**
     * 获取好友列表
     * @param userId
     * @return
     */
    List<FriendsVO> getFriends(String userId);

    /**
     * 判断是否有重复的用户id
     * @return
     */
    Boolean duplicateUserId();

}
